package com.zhang.spark_1.spark_core.operator.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @title:
 * @author: zhang
 * @date: 2021/12/5 18:51 
 */
object Spark03_RDD_Operator_Transform_Test {

  def main(args: Array[String]): Unit = {
    //获取spark的连接
    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("operator")
    val sc: SparkContext = new SparkContext(conf)
    //TODO mapPartitionsWithIndex 小功能：获取第二个数据分区的数据
    //将待处理的数据以分区为单位发送到计算节点进行处理，
    // 这里的处理是指可以进行任意的处理，哪怕是过滤数据，在处理时同时可以获取当前分区索引。

    val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4),2)

    val rddMap = rdd.mapPartitionsWithIndex(
      (index, iter) => {
        if (index == 1) {
          iter
        } else {
          Nil.iterator
        }
      }
    )

    rddMap.collect().foreach(println)
    sc.stop()
  }
}
